#ifndef EXT4_SCANNER_H
#define EXT4_SCANNER_H

#include "utils.h"
#include <glib.h>
#include <ext2fs/ext2fs.h> // 包含头文件

// --- 上下文结构体 ---
typedef struct {
    ext2_filsys fs; // libext2fs 的文件系统对象
    const char* output_dir;
    FILE* lba_map_file;
    GHashTable* seen_chunks_set;
    long long* processed_blocks;
    long long* unique_blocks;
    // 不再需要 total_blocks，因为我们无法提前知道
} callback_context_t;

// --- LBA Map 文件条目结构 ---
#pragma pack(push, 1)
typedef struct {
    long long lba;
    char hash[XXH64_HEX_LEN + 1];
} lba_map_entry_t;
#pragma pack(pop)

// --- 主扫描函数 ---
int scan_ext4_and_build_map(const char *device_path, const char* output_dir);

#endif // EXT4_SCANNER_H